from textual.screen import Screen
from textual.app import ComposeResult
from textual.widgets import Static, Footer
from textual.containers import Vertical


HELP_TEXT = """[green]欢迎体验本软件！[/]

本软件中均可使用Tab切换按钮等组件, 部分界面可以使用方向键切换。
按钮均使用Enter选中。

一、关于 [yellow]·文件查看·[/] 模块

    此模块目前支持查看、编辑、删除和添加文件。
    1.鼠标左键、右键、中键均可展开文件夹和打开文件。
    2.[yellow]空格[/]、[yellow]Enter[/] 均可展开文件夹; 仅 [yellow]Enter[/] 能打开文件。
    3.键盘 [yellow]Insert[/] 键可在文件夹下创建新文件; [yellow]+[/] 键可在文件夹下创建新文件夹。
    若当前光标为文件, 则在同级目录下创建新的文件/文件夹。
    4.[yellow]Delete[/] 键可以删除当前光标选中的文件/文件夹。
    5.编辑文件: 方向键移动表格中的光标, 通过 input 输入框编辑内容。

二、关于 [green]·内存/CPU状态池·[/] 模块

    采用八点字符集 "⣿", 将一个字符的位置通过数学运算分割为抽象的两列简易直方图。
    CPU/内存占用的数据来源于 psutil 库, 每隔[cyan] 1.5s [/]刷新一次。
    【注】CPU 占用率数据可能与下表不同步, 因为采用 [yellow]·异步刷新·[/]。
    原因: psutil 库获取 cpu_percent 的功能使用了 [red]time.sleep()[/], 这会阻塞整个软
    件造成假死的卡顿现象。
    因此采用 [red]async[/] 异步函数进行刷新。

三、关于 [yellow]·在线用户·[/] 模块

    实时更新当前系统的在线用户。
    [red]root 用户(管理员)[/]可以通过此模块踢出违规用户。
    1.鼠标: 左键选择, 右键弹出详情及确认界面。
    2.键盘: 方向键移动光标、空格选择, Enter 弹出详情及确认界面。

四、关于 [green]·进程管理·[/] 模块

    实时更新当前系统的进程信息。
    [red]root 用户(管理员)[/]可以通过此模块杀死超额占用大量资源的进程。
    1.鼠标: 左键选择, 右键弹出详情及确认界面。
    2.键盘: 方向键移动光标、空格选择, Enter 弹出详情及确认界面。

----[cyan]斡铎[/]----
程序部分功能优化目前尚不完善, 可能会存在些许 bug。
本程序采用 MIT 协议。
如需转载, 请注明出处！

gitee网址:
https://gitee.com/arlodh/550A

github网址:
https://github.com/MniaHign/550A
"""


class HelpScreen(Screen):  # 设置界面

    def __init__(self, id):
        super().__init__()
        self.id = id       # 该界面的id

    def compose(self) -> ComposeResult:
        yield Footer()
        yield Vertical(
                Static(HELP_TEXT, id="help_text"),
            id="help_container"
        )
	
    def key_up(self):
        self.query_one("#help_container").scroll_up()

    def key_down(self):
        self.query_one("#help_container").scroll_down()

    def key_left(self):
        self.query_one("#help_container").scroll_left()

    def key_right(self):
        self.query_one("#help_container").scroll_right()

    def key_pagedown(self):
        self.query_one("#help_container").scroll_page_down()
        
    def key_pageup(self):
        self.query_one("#help_container").scroll_page_up()

    def on_mount(self) -> None:
        self.query_one("#help_container").border_title = "帮助"
        self.query_one("#help_container").border_subtitle = "By ·[cyan]斡铎[/cyan]·"
